////////////////////////////////////////////////////
// CONEXIÓN A MENSATEK POR HTTP/S DESDE JAVA
// versión API 4.0
// Última modificación 3 Septiembre 2006
////////////////////////////////////////////////////

package com.ipartek.formacion.gestformwww.modelo.beans;


import java.io.*;
import java.net.URL;
import java.net.URLEncoder;
import java.net.URLConnection;
import java.util.logging.Level;
import java.util.logging.Logger;

public class mensatek
{

    public mensatek()
    {
    }
    //////////////////////////////////////////////////////
    // ENVIA MENSAJES A MOVILES
    // Correo: String con el correo del usuario que envía
    // Passwd: String con la contraseña del usuario que envía (en Mensatek)
    // Destinatarios: Móvil/Móviles al/a los que se envía el mensaje, de la forma PrefijoTelefono (Ej:346000000 ó para varios destinatarios
    //           346000000;3519760000;443450000) separados por punto y coma ';'
    // Mensaje: Mensaje que se envía
    // Remitente: (Por defecto "") Es el teléfono, nombre de la empresa o persona que envía. Sólo válido si se envía mensaje profesional
    //            Si se deja en blanco y se selecciona mensaje profesional, se enviará desde el teléfono móvil registrado por el usuario qu envía en Mensatek
    //            ATENCIÓN: Si es alfanumérico el Máximo es de 11 caracteres.
    // Fecha: Fecha en la que queda progrmado el envío, el mensaje se enviará en esa fecha. Por defecto "" que significa enviar ahora. Formato: Año-Mes-dia hora:minuto
    //        La referencia horaria es GMT+1 (Zona horaria de España)
    // Flash: 0=No, 1=Sí
    // Report: 0=No, 1=Sí
    // Profesional: 0=No, 1=Sí (si el mensaje es profesional o no, en cuyo caso se enviará como económico).
    // DEVUELVE:
    //  String
    //      >0 correspondiente al número de mensajes enviados.
    //      -1 Error de autenticación
    //      -2 no hay créditos suficientes.
    //      -3 Error en los datos de la llamada
    ///////////////////////////////////////////////////////

    public String enviar(String Correo, String Passwd, String Destinatarios, String Mensaje, String Remitente, String Fecha, int Flash, int Report, int Descuento )
    {
         String res = "";
       
            String s;
            try {
            s="http://api.mensatek.com/v4/enviar.php?Destinatarios="+URLEncoder.encode(Destinatarios)+"&Correo="+URLEncoder.encode(Correo)+"&Passwd="+URLEncoder.encode(Passwd)+"&Mensaje="+URLEncoder.encode(Mensaje)+"&Remitente=IPARTEK";
            s= s + "&Flash="+Flash+ "&Report="+Report+ "&Descuento="+Descuento;

            if (Fecha.compareTo("")!=0) 
                s+= "&Fecha="+URLEncoder.encode(Fecha,"UTF-8");
           

            try
            {
               URL url = new URL(s);
               
               URLConnection urlConnection = url.openConnection();
               BufferedReader htmlPage = new BufferedReader(new InputStreamReader(url.openStream()));

               String line = "";
               while((line = htmlPage.readLine()) != null) {res=res+line;}
               htmlPage.close();
               urlConnection = null;
            }
            catch(Exception e)
            {
              Logger.getLogger(mensatek.class.getName()).log(Level.SEVERE, null, e);
            }

           
        } catch (UnsupportedEncodingException ex) {
            Logger.getLogger(mensatek.class.getName()).log(Level.SEVERE, null, ex);
        }
         return res;
    }

    //////////////////////////////////////////////////////
    // OBTIENE EL NÚMERO DE CRÉDITOS RESTANTE DEL USUARIO
    // Correo: String con el correo del usuario que envía
    // Passwd: String con la contraseña del usuario que envía (en Mensatek)
    // DEVUELVE:
    //  Float correspondiente al número de créditos en la cuenta.
    ///////////////////////////////////////////////////////
    public String creditos(String Correo, String Passwd)
    {
      String s;
      s="http://api.mensatek.com/v4/creditos.php?Correo="+URLEncoder.encode(Correo)+"&Passwd="+URLEncoder.encode(Passwd);
      String res = "";

      try
      {
        URL url = new URL(s);
        URLConnection urlConnection = url.openConnection();
        BufferedReader htmlPage = new BufferedReader(new InputStreamReader(url.openStream()));
        String line = "";
        while((line = htmlPage.readLine()) != null) {res=line;}
        htmlPage.close();
        urlConnection = null;
      }
      catch(Exception e)
      {
        e.printStackTrace();
      }

      return res;
    }

    public String formatearRespuestaEnvioSMS(String RespuestaEnvioSms){
        String res;
        String resParametrizada;
         if (RespuestaEnvioSms.substring(RespuestaEnvioSms.indexOf(':')+1,RespuestaEnvioSms.indexOf(':')+2).equals("-")){
                  //La respuesta tiene un valor negativo

                  res = RespuestaEnvioSms.substring(RespuestaEnvioSms.indexOf(':')+1,RespuestaEnvioSms.indexOf(':')+3);
              }else{
                 //La respuesta tiene un valor positivo
                 res = RespuestaEnvioSms.substring(RespuestaEnvioSms.indexOf(':')+1,RespuestaEnvioSms.indexOf(':')+2);
              }
          switch (Integer.parseInt(res)) {

                case -1:
                    resParametrizada = "1";
                    break;
                case -2:
                    resParametrizada = "2";
                    break;
                case -3:
                    resParametrizada = "3";
                    break;
                case -4:
                    resParametrizada = "6";
                    break;
                default:
                    resParametrizada = "5";
                    break;
            }

        return resParametrizada;
    }
}

